package moon.core.genericity;

import java.util.ArrayList;
import java.util.List;

import moon.core.Name;
import moon.core.classdef.ClassDef;
import moon.core.classdef.Property;

/**
 * Formal parameter with or without where clauses.
 * 
 * @author <a href="mailto:rmartico@ubu.es">Ra&uacute;l Marticorena</a>
 *
 */
@SuppressWarnings("serial")
public abstract class BoundW extends FormalPar {
	
	/**
	 * Properties.
	 */
	private List<Property> properties;

	/**
	 * Constructor.
	 * 
	 * @param name name
	 * @param classDef class
	 */
	public BoundW(Name name, ClassDef classDef) {
		super(name, classDef);
		properties = new ArrayList<Property>();
	}
	
	/**
	 * Adds a property.
	 * 
	 * @param property property
	 */
	public void add(Property property){
		properties.add(property);
	}
	
	/**
	 * Gets the properties in the where clause.
	 * 
	 * @return properties
	 */
	public List<Property> getProperties(){
		return properties;
	}
	
} // BoundW
